/**
 * @function 防抖函数，规定时间内点击多次，只执行最后一次
 * @method debounce(fn,wait);
 * @param {function} fn       需要执行的函数
 * @param {number} wait     等待时间（毫秒）
 * @example 
    const func = () => {
        console.log("1234567");
    };
    const dianji = () => {
        debounce(func, 500);
    };
 */
    const debounce = (() => {
        let timer = 0;
        return function (fn, wait) {
            clearTimeout(timer);
            timer = setTimeout(fn, wait);
        };
    })();
    
    /**
     * @function 节流函数，连续点击多次，规定时间内只执行一次
     * @method throttle(fn,wait);
     * @param {function} fn       需要执行的函数
     * @param {number} wait     等待时间（毫秒）
     * @example 
        const func = () => {
            console.log("1234567");
        };
        const dianji = () => {
            throttle(func, 500);
        };
     */
    const throttle = (() => {
        var timer = null;
        return function (fn, wait) {
            var context = this;
            var args = arguments;
            if (!timer) {
                timer = setTimeout(function () {
                    fn.apply(context, args);
                    timer = null;
                }, wait);
            }
        };
    })();
    
    export { debounce, throttle }  //可解构 